﻿define(function(require,exports,module) {
	// require('./plug/hammer.min');
	// require('./plug/layer/layer');
	var myPub = require('./public');

    $(function() {
    	var oBillingType = $('.js_billingType');		// 发票类型
    	var oText = $('.js_Text');						// 输入框
		var oBillMobile = $('.js_billMobile');			// 手机输入框
		var oBillMail = $('.js_billMail');				// 邮箱
		var oBillingHead = $('.js_billingHead'); 				// 发票抬头选择
		var oBillingContList = $('.js_billingContList'); 		// 普通商品发票内容选择
		var oBillingInfo = $('.js_billingInfo'); 				// 收票信息
		var oSubmitApply = $('.js_submitApply');				// 提交
        var oSubmitCancel = $('.js_submitCancel');				// 不使用
        var oUseBillSide = $('.js_useBillSide');      // 提交订单 发票使用入口
        var oBillSide = $('.js_billSide');            // 发票弹框
        var oShadow = $('.js_shadow1');              // 阴影
        var oBllingText = $('.js_billingText');      // 发票信息展示
        var bSideOff = true;

        var moveHeight = oBillSide.outerHeight(true);    // 发票弹框高度
        oBillSide.css({'bottom': -moveHeight });


        function OnlyBillType(sType) {
            var _Li = oBillingType.find('li');
            _Li.removeClass('active');
            // 判断是否显示联系信息
            sType == 'electron' ? oBillingInfo.show() : oBillingInfo.hide();
            // 判断禁止发票类型
            _Li.each(function (i) {
            	if($('#invoice').val()==""){
            		if(_Li.eq(i).attr('billType') == 'nofapiao'){
                		_Li.eq(i).addClass('active');
                	};
            	}
            	if(i>0 && sType!="" && _Li.eq(i).attr('billType') != sType){
            		 _Li.eq(i).addClass('unactive');
            	}
            	if(i>0 && sType!="" && _Li.eq(i).attr('billType') == sType && $('#invoice').val()!=""){
           		 _Li.eq(i).addClass('active');
            	}
            });
        }
        //验证地址是否选择
        function checkAddress(){
        	var address=$('#province').html();
        	if(null!=address && ""!=address) {return true;}
        	else {return false;}
        }
        // 发票弹框显示
        oUseBillSide.hammer().on('tap', function () {
        	if(!checkAddress()) {
        		myPub.TipLayer('请您先填写地址信息！')
        		return;
        	}
            if(!bSideOff)  return;
            bSideOff = false;
            var _Li = oBillingType.find('li');
            if($('#invoice').val()=="") {
                 _Li.eq(0).addClass('active');
            	 _Li.eq(1).removeClass('active');
            	 $('.billingContent').addClass('unactive1');
                 $('.billingInfo').addClass('unactive1');
                 $('.billingHead').addClass('unactive1');
            }else{
            	 _Li.eq(1).addClass('active');
             	 _Li.eq(0).removeClass('active');
             	$('.billingContent').removeClass('unactive1');
                $('.billingInfo').removeClass('unactive1');
                $('.billingHead').removeClass('unactive1');
            }

            oBillSide.show().stop().animate({ 'bottom':0 },300,function() {
                oShadow.show();
                $('html').addClass('bodyHeight100');
                bSideOff = true
            });
            myPub.HamstopPropaga();
        });

        oShadow.hammer().on('tap', function () {
            //隐藏服务
            HideBillSide();
            myPub.HamstopPropaga();
        });

        // 发票弹框关闭
        function HideBillSide(fn) {
            oBillSide.stop().animate({bottom:-moveHeight},300,function(){
                oBillSide.hide();
                oShadow.hide();
                $('html').removeClass('bodyHeight100');
                bSideOff = true
                if(fn)fn();
            });
        }


		// 手机号中间隐藏4位数
       /* HideNum(oBillMobile.find('.js_mobile'));*/

		// 表格显示和隐藏清除按钮
        oText.on('input propertychange',function(){
            var _val = $(this).val();
            var oClearBtn = $(this).siblings('.js_clearBtn');
            _val == '' ? oClearBtn.hide(): oClearBtn.show();
		});

        // 手机验证
        oBillMobile.find('input').on('input propertychange',function(){
            var _val = $(this).val();
            if( checkPhoneNumber(_val) ) {
                oBillMobile.removeClass('has_error').addClass('has_success')
            }
            else {
                oBillMobile.addClass('has_error').removeClass('has_success')
            }
        });

        //邮箱
        oBillMail.find('input').on('input propertychange', function () {
            var _val = $(this).val();
            if(checkMail(_val)) {
                oBillMail.removeClass('has_error').addClass('has_success')
            }
            else {
                oBillMail.addClass('has_error').removeClass('has_success')
            }
        });

        // 发票类型选择
        oBillingType.find('li').hammer().on('tap', function () {
            // 判断是否是禁止的
            if($(this).hasClass('unactive')) return;
            oBillingType.find('li').removeClass('active');
            $(this).addClass('active');
            if($(this).attr('billType') == 'nofapiao'){
               oBillingHead.find('li').removeClass('active');
               oBillingContList.find('li').removeClass('active');
               $('#companyName').attr("disabled","disabled");
               $('#taxpayerCode').attr("disabled","disabled");
               $('.billingContent').addClass('unactive1');
               $('.billingInfo').addClass('unactive1');
               $('.billingHead').addClass('unactive1');


        	}else{
        		 $('.billingContent').removeClass('unactive1');
                 $('.billingInfo').removeClass('unactive1');
                 $('.billingHead').removeClass('unactive1');
        		$('#companyName').removeAttr("disabled");
                $('#taxpayerCode').removeAttr("disabled");

        	}

        });

        // 抬头发票 个人和公司 选择
        oBillingHead.find('li').hammer().on('tap', function () {
        	 if($('.js_billingType li.active').attr('billType')!='nofapiao'){
	        	oBillingHead.find('li').removeClass('active');
	            $(this).addClass('active');
				if($(this).attr('billHead') == 'company') {
	                oBillingHead.find('.js_companyBill').show();
	                return
				}
	            oBillingHead.find('.js_companyBill').hide();
        	}

        });

        // 发票内容 选择
        oBillingContList.find('li').hammer().on('tap', function () {
        	if($('.js_billingType li.active').attr('billType')!='nofapiao'){
	            oBillingContList.find('li').removeClass('active');
	            if($('.js_billingType li.active').attr('billType')!='nofapiao'){
	            	$(this).addClass('active');
            }}
        });


        // 提交
        oSubmitApply.hammer().on('tap', function () {
            // 发票类型的属性
        	var _oBillType = oBillingType.find('li.active').attr('billType');

        	var itype= $('.js_billingType li.active').attr('value'); //发票类型信息

    		var ihead= $('.js_billingHead li.active').attr('value'); //发票抬头信息

    		var icontent=$('.js_billingContList li.active').children('span:eq(1)').html();

    		var companyName=$('#companyName').val();

    		var taxCode=$('#taxpayerCode').val();

    		var imobile=$('#billMobile').val();

    		var iemail=$('#billElectron').val();

			// 普通发票
			if (_oBillType == 'normal') {
                checkBillHead(function () {
                	checkContentNull(function(){
                		HideBillSide();
                        oBllingText.text('个人普通发票')
                        var invoice={"itype":parseInt(itype),"ihead":parseInt(ihead),"icontent":icontent};
                        $('#invoice').val(JSON.stringify(invoice));
                	})

                }, function () {
                    checkCompanyInfo(function () {
                    	checkContentNull(function(){
	                        HideBillSide();
	                        oBllingText.text('公司普通发票');
	                        var invoice={"itype":parseInt(itype),"ihead":parseInt(ihead),"icontent":icontent,"companyName":companyName,"taxCode":taxCode};
	                        $('#invoice').val(JSON.stringify(invoice));
                    	})
                    })
                });
			}
			// 电子发票
			else if (_oBillType == 'electron') {
                checkBillHead(function () {
                	checkContentNull(function(){
	                    checkMobileNull(function () {
	                        HideBillSide();
	                        oBllingText.text('个人电子发票');
	                        var invoice={"itype":parseInt(itype),"ihead":parseInt(ihead),"icontent":icontent,"imobile":imobile,"iemail":iemail};
	                        $('#invoice').val(JSON.stringify(invoice));
	                    });
                	})
                }, function () {
                    checkCompanyInfo(function () {
                    	checkContentNull(function(){
	                        checkMobileNull(function () {
	                            HideBillSide();
	                            oBllingText.text('公司电子发票');
	                        var invoice={"itype":parseInt(itype),"ihead":parseInt(ihead),"icontent":icontent,"companyName":companyName,"taxCode":taxCode,"imobile":imobile,"iemail":iemail};
	                        $('#invoice').val(JSON.stringify(invoice));
	                        })
                    	})
                    });
                });
			}
			else if(_oBillType == 'nofapiao'){
				 $('#invoice').val("");
				 HideBillSide();
                 oBllingText.text('不开发票');
			}
        });

        // 不使用发票
        oSubmitCancel.hammer().on('tap', function () {
            HideBillSide();
            $('#invoice').val("");
            oBllingText.html("添加发票信息");
        });

        // 检测发票抬头类型是 公司还是个人
		function checkBillHead(argPerson, argCompany) {
            // 发票抬头类型
            var _oBillHead = oBillingHead.find('li.active').attr('billHead');
            if(_oBillHead==null || _oBillHead==""){myPub.TipLayer('请选择发票抬头！')}
            if (_oBillHead == 'person' ) {
                if(argPerson) argPerson();
            }
            else if (_oBillHead == 'company'){
				if(argCompany) argCompany();
            }
        }
		//检测发票内容
		function checkContentNull(fn){
			var content=$('.js_billingContList li.active').children('span:eq(1)').html();
			if(content==null || content =="")
			{
				myPub.TipLayer('请选择发票内容！')
			}else{
				if(fn) fn()
			}
		}
		// 检测发票抬头公司信息  输入框是否为空
		function checkCompanyInfo(fn) {
            var _oCompanyBillInput = oBillingHead.find('.js_companyBill input');
            if(_oCompanyBillInput.eq(0).val() == '') {
                myPub.TipLayer('请输入您的公司名称！')
            }
            else if (_oCompanyBillInput.eq(1).val() == '') {
                myPub.TipLayer('请输入纳税人识别码！')
            }
            else {
            	if(fn) fn()
            }
        }

        // 检测收票输入框是否为空
        function checkMobileNull(fn) {
        	var _mobile=oBillMobile.find('input').val();
        	var _email=oBillMail.find('input').val();
            if(_mobile== '' ) {
                myPub.TipLayer('请输入您的手机号码！')
            }else if(!checkPhoneNumber(_mobile))
            {
            	 myPub.TipLayer('请输入正确的手机号码！')
            }
            else if(!checkMail(_email) && _email!=""){
            	myPub.TipLayer('请输入正确的邮箱！')
            }
            else {
                if(fn) fn()
            }
        }
    });


    // 校验电话号码
    function checkPhoneNumber(v){
    	var regMobile = /^1[3|4|5|7|8]\d{9}$/;   //验证手机号码
    	var regPhone = /^(^0\d{2}-?\d{8}$)|(^0\d{3}-?\d{7}$)|(^\(0\d{2}\)-?\d{8}$)|(^\(0\d{3}\)-?\d{7}$)$/;   //验证固定电话
    	if(regMobile.test(v) || regPhone.test(v)){
    		return true;
    	}
    	return false;
    }

    // 校验邮箱
    function checkMail(v) {
		var regMail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,29})+$/;
		if(regMail.test(v)){
			return true
		}
		return false;
    }

    // 隐藏手机中间4位
    /*function HideNum(obj) {
        var phone = obj.val();
        var mphone = phone.substr(3,4);
        var lphone = phone.replace(mphone,"****");
        obj.attr("value", lphone);
    }*/

});



